iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

Ruby on Rails JS系列 第 24

Ruby on Rails layout

  • 分享至 

  • xImage
  •  

預設版型?
前⾯提到說預設的版型是 app/views/layouts/application.html.erb ,這句話
其實不完全正確。真正的預設版型應該是「跟 Controller 同名」的版型。
舉例來說,有個 Controller 叫做 CandidatesController ,它的版型檔案會先到
app/views/layouts/ ⽬錄下找 candidates.html.erb 檔案,如果找不到才換
找 application.html.erb 。
只能⼀個 yield 嗎?
這個 yield 就是⽤來填空的「坑」,不⼀定只有⼀個,想要的話也可以有很多
個,⽽且還可以幫這些坑標記名字:

<!DOCTYPE html>
<html>
<head>
<title><%= yield :my_title %></title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-tu
rbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-tr
ack': 'reload' %>
</head>
<body>
<div class="container">
<%= yield %>
</div>
</body>
</html>
:my_title %> ,意思就是把這個坑標記成 my_title 。要填這個指定名字的坑

有兩種做法:
使⽤ provide
你可以使⽤ provide ⽅法,指定要幫 my_title 提供資料:

<% provide :my_title, "你好,我是 Title" %>
<h1>候選⼈列表</h1>
15 Layout,Render 與 View Helper
228
<%= link_to "新增候選⼈", new_candidate_path %>
<table class="table">
<thead>
<tr>
<td>投票</td>
<td>候選⼈姓名</td>
...[略]...
使⽤ content_for
或是使⽤ content_for 來填坑:
<% content_for :my_title do %>
你好,我是 Title
<% end %>
<h1>候選⼈列表</h1>
<%= link_to "新增候選⼈", new_candidate_path %>
<table class="table">
<thead>
<tr>
<td>投票</td>
<td>候選⼈姓名</td>
...[略]..

參考資料

[為你自己學Ruby on Rails]https://railsbook.tw/chapters/08-ruby-basic-4.html


上一篇
Ruby on Rails layout
下一篇
Ruby on Rails 局部渲染(Partial Render)
系列文
Ruby on Rails JS29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言